<?php
//搜索控制器
namespace Home\Controller;
use Think\Controller;
class SearchController extends CommonController{
    //搜索用户找人主方法
    public function sechUser(){
        $keyword=$this->_Keyword();
        if($keyword){
            //复合查询
            //用户搜索关键字模糊查询，除自身用户以外的所有用户
            $where = array(
            'username'=>array('LIKE','%'.$keyword.'%'),
            'uid'=>array('NEQ',session('uid')),
            );
            //tp分页类的使用
            //实例哪个模型
            $User = M('userinfo');
            //获得这个模型的数据行总行数
            $count = $User->count();
            // 实例化分页类 传入两个参数1.总记录数2.每页显示的记录数(控制数据源这个二维数组的元素数量)
            $Page = new \Think\Page($count,2);
            // 分页显示的链接输出在这个变量里
            $show = $Page->show();
            //分页的数据总源，(二维数组，)
            //但数据源在分配到模板里时，或者在作为变量使用时，它只能代表一页的数据，就是说每页显示几条，
            //在有数据的前提下，他就有几个数组元素
            //只会输出受分页类实例化时所控制的每页所显示条数
            //每页显示一条，就代表result这个二维数组里只有一个数组元素
            $result = $User->where($where)->field('username,sex,location,intro,face80,follow,fans,weibo,uid as id')->limit($Page->firstRow.','.$Page->listRows)->select();
            //把分页后的数据代出组合方法看用户与被搜索的用户是否互相关注
            $result=$this->_getMutual($result);
            $this->assign('result',$result);
            $this->assign('page',$show);
        }
         $this->assign('keyword',$keyword);
         $this->display();
    }
    //返回get过来的数据
    private function _Keyword(){
        //前台js默认的提示数据的后台不受理
        return $_GET['keyword']=='搜索微博、找人'?'':I('get.keyword');
    }
    //把分页数据源查出的用户是否为用户关注的用户
    private function _getMutual($result){
        if(!$result){
            return false;
        }
        //关注表
        $db=M('follow');
        //循环二维result数组长度是分页类实例化时所控制的
        foreach($result as $k =>$v){
            //是否互相关注sql语句(被搜索到的用户是否是为用户关注的，并且用户也被搜索到的用户所)
            //如果查出两条结果
            //就代表用户与被搜索用户是相互关注的关系
            $sql='(select `follow` from `weibo_follow` WHERE `follow`='.$v['id'].' AND
             `fans`='.session('uid').') UNION (select `follow` from `weibo_follow` WHERE `follow`='.session('uid').' AND
             `fans`='.$v['id'].')';
            //返回关注关系的查询结果
            $mutual=$db->query($sql);
            //给result的数组添加标识元素
            if(count($mutual)==2){
                //互相关注标识元素
                $result[$k]['mutual']=1;
                //己关注标识元素
                $result[$k]['followed']=1;
            }else{
                $result[$k]['mutual']=0;
            }
            //用户单方面关注查询条件
            $where=array(
                'follow'=>$v['id'],
                'fans'=>session('uid')
            );
            //单方面关注的话，就会查出一条数据就会加上1否则就为零，也可以实现标识效果
            $result[$k]['followed']=$db->where($where)->count();
        }
        //返回处理分页数据后产生的新分页数据结果
        return $result;
    } 
    //搜索微博
    public function sechWeibo(){
        $keyword=$this->_Keyword();
        if($keyword){
            //复合查询
            //微搜索关键字模糊查询
            $where = array(
            'content'=>array('LIKE','%'.$keyword.'%'),
            );
            //tp分页类的使用
            //实例哪个模型
            $db = D('Weibo');
            $mdb=M('weibo');
            $count = $mdb->where($where)->count();
            $Page = new \Think\Page($count,4);
            // 分页显示的链接输出在这个变量里
            $show = $Page->show();
            $result = $db->limit($Page->firstRow.','.$Page->listRows)->getAll($where);
            $this->assign('weibo',$result);
            $this->assign('page',$show);
            $this->assign('keyword',$keyword);
            $this->display();
            die;
        }
        $this->assign('weibo',false);
        $this->display();
    }   
}